#pragma once

#include "Graphics/Graphic.h"

#include <sstream>

class Window {
public:
	Window(INT width, INT height, LPCSTR WindowName);
	~Window();
	Window(const Window&) = delete;
	Window& operator=(const Window&) = delete;

	static BOOL Message() noexcept;
	Graphic& GetGraphic();

private:
	static LRESULT CALLBACK HandleMsgSetup(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
	static LRESULT CALLBACK HandleMsgThunk(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;
	LRESULT HandleMsg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) noexcept;

private:
	INT width;
	INT height;
	HINSTANCE hInstance;
	std::unique_ptr<Graphic> _graphic;
};

